﻿#include<stdio.h>

/*
	桶排序的简单应用：
		那下面的例子来说：用户输入n个0-100个数据，然后对着n个数据进行排序

		桶排序中所需要的桶就是100个，因为用户可能输入最大100的数据而且用户输入数据的
		特点是：用户输入的数是100个桶都有的对应的下标，用户可能输入多个0-100之间的数，
		那么保存的时候就直接在保存每种数据有多少个 arr[n]++ , 然后所谓的排序，就是按照
		桶的数量，若是升序（就从0开始遍历向上遍历），若是降序（就从最大桶(100)开始向下遍历）
		遍历的时候 就是访问数组中有多少个元素 然后根据数组中的个数进行输出对应得下标值（就是保存的
		数值）。
	
*/

void main(void)
{
	int arr[100] = {0};
	int count;
	int i;
	int index;

	printf("请输入你希望数组的大小：");
	scanf("%d",&count);

	printf("请输入%d个数(请输入0-100之间的数)：", count);
	for(index = 0; index < count; index++){
		scanf("%d",&i);
		arr[i]++;                             //对输入数和数组下标相对应得的数组值进行自增 ，统计该数有多少个
	}

	for(index = 0; index < 100; index++){	  //对全部桶进行遍历
		for(i = 1; i <= arr[index]; i++){	  //对桶中的元素进行遍历（有多少个相同的元素）
			printf("%d ", index);			  //输出与桶下标相同的数
		}
	}

}